﻿using System;

namespace LGPSDataGen.Generators
{
    /// <summary>
    /// This is the base strategy class for each different Generator
    /// </summary>
    public abstract class Generator : IGenerator
    {
        /// <summary>
        /// Find the data to download
        /// </summary>
        public virtual void DownloadData()
        {
            //Not implementing does nothing
        }

        /// <summary>
        /// Process the data in any way nesecray
        /// </summary>
        public virtual void ProcessData()
        {
            //Not implementing does nothing
        }

        /// <summary>
        /// Extract data from the download so we can extract
        /// </summary>
        public virtual void ExtractData()
        {
            //Not implementing does nothing
        }

        //Most enries should use this to run the gauntlet of all methods for the generator
        public virtual void CradleToGrave()
        {
            DownloadData();
            ExtractData();
            ProcessData();
        }
    }
}
